package com.siyu.common.utils.uuid;

import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.IdUtil;

/**
 * ID生成器工具类
 * 
 * @author ruoyi
 */
public class IdUtils
{
    /**
     * 获取随机UUID
     * 
     * @return 随机UUID
     */
    public static String randomUUID()
    {
        return UUID.randomUUID().toString();
    }

    /**
     * 简化的UUID，去掉了横线
     * 
     * @return 简化的UUID，去掉了横线
     */
    public static String simpleUUID()
    {
        return UUID.randomUUID().toString(true);
    }

    /**
     * 获取随机UUID，使用性能更好的ThreadLocalRandom生成UUID
     * 
     * @return 随机UUID
     */
    public static String fastUUID()
    {
        return UUID.fastUUID().toString();
    }

    /**
     * 简化的UUID，去掉了横线，使用性能更好的ThreadLocalRandom生成UUID
     * 
     * @return 简化的UUID，去掉了横线
     */
    public static String fastSimpleUUID()
    {
        return UUID.fastUUID().toString(true);
    }

    public static String getId() {
        Snowflake snowflake = IdUtil.getSnowflake(1, 1);
        String s = String.valueOf(snowflake.nextId());

        return String.valueOf(snowflake.nextId());
    }

    public static Long getLongId() {
        // 创建 Snowflake ID 生成器
        long snowflakeId = IdUtil.getSnowflake(1, 1).nextId();
        // 将 Snowflake ID 转换为字符串，并截取前 16 位
        String idString = Long.toString(snowflakeId);
        String shortId = idString.length() > 16 ? idString.substring(0, 16) : idString;
        // 如果需要确保是 Long 类型并且符合条件，可以解析为 Long 类型
        long resultId = Long.parseLong(shortId);
        return resultId;
    }

}
